Блог им. 3Qu |Рождение тестовых Граалей.

    • 17 июля 2020, 19:44
    • |
    • 3Qu
  • Еще

Недели две назад обещал ответить нашему коллеге на вопрос и написать на эту тему топик. Отвечаю и пишу.

Итак, нам пришла в голову просто бесподобная и очень простая идея Грааля. Мы имеем всего два индикатора с параметрами х1 и х2 соответственно. Их состояние описывается вектором X = [x1,x2], и в некоторой области Gv подмножества Х и находится наш Грааль, многие сделки в этой области в плюс. По крайней мере, мы так предполагаем, хотя где находится эта область и есть ли она вообще, эта Gv представляем весьма приблизительно, и мы, разумеется, хотели бы это выяснить. Рис.1.
Рождение тестовых Граалей.

В пространстве состояний X мы ограничили область нашего видения Грааля областью Gv, и в нее даже попал кусок настоящего Грааля G.
Запускаем оптимизацию системы по прибыли, положение и параметры области Gv меняются таким образом, что оптимизатор находит и выделяет настоящий Грааль G областью Gr в пространстве X.
Торговая система готова к употреблению.



( Читать дальше )

Блог им. 3Qu |Нейросети в торговых системах. 2.

    • 10 июля 2020, 15:35
    • |
    • 3Qu
  • Еще

В прошлом топике [1] мы разобрались с тем, что и как подавать на входы нейросети (НС). Теперь надо как-то сказать НС — «Горшочек, вари», предварительно рассказав, что конкретно и как именно надо «варить». Мыслей, в общем, нет никаких. Потому, давайте обратимся к классикам — Саймону Хайкину [2,c.33]:
Нейросети в торговых системах. 2.
Вот так вот, сразу и на первых страницах — «не могут обеспечить готовые решения», необходимо интегрировать в сложные ситемы", «относительно простые задачи, часть из которых может решаться НС». Книга конечно старая, но и наш MLP (Multilayer perceptron) в составе scikit-learn новизной не отличается. Этому MLP еще и простую, да конкретную задачу подавай, и вокруг него «сложную систему» городи. Как-то энтузиазма поубавилось.

Ладно, коли на вход нашего MLP уже подается временной ряд, пусть он нам определяет, хотя бы приблизительно, моменты входа в Лонг. А мы потом его проверим, и уточним эти моменты.
Теперь нашу НС надо как-то научить находить Лонг — показать НС как правильно и как неправильно. А мы сами-то знаем как правильно? Учителя фиговы. Это с кошечками-собачками хорошо — показывай себе, и пусть учится.
А давайте что-нибудь предположим, назовем какие-то входы в Лонг правильными, а остальные неправильными. Если мы предположили какую-нибудь ерунду, то НС просто ничему разумному не научится, и при дальнейшей проверке это быстро выяснится. А что-то предположить нам поможет интернет.
Кстати, это свойство НС, отличать фантазии от действительных закономерностей, уже вполне можно использовать для проверки каких-либо наших педположений о поведении рынка. Надо только рассказать о них НС, и она скажет, есть там что-то, с чем следует работать, или выкинуть это и забыть.
Однако, обратимся к интернету. Несколько лет назад наш коллега по несчастью занимался методами Машинного обучения (МО) с целью победить рынок. Он строил массу предикторов, подавал их на входы различных систем МО, и обучал по разметке Зиг-Зага. А что, неплохая идея, входы — лучше не придумаешь.
Вообще, если на минимуме Зиг-Зага загородить правую часть графика, как-то сомнительно, что вообще можно что-то сказать о дальнейшем движении. Да, и по ходу пьесы этот минимум будет постоянно перемещаться. Да и наш коллега долго и упорно менял предикторы и системы МО, потом все реже, реже, и вообще пропал из поля зрения. А на истории, конечно, Зиг-Заг — лепота.
Давайте сдвинем точку входа в Лонг немного вправо от минимума Зиг-Зага, где цена уже начала расти. Мы получим некую U-образную кривую цены, на которой НС хотя бы cможет построить линию регрессии. Не говорю, что это хорошая идея, но мы с помощью НС попробуем ее проверить. Что получим? — понятия не имею, я это делаю по ходу написания материала.
Разметку правильных входов для обучения можно сделать по Зиг-Загу, установив какой нибудь разумный порог от его минимума.
А разметку неправильных входов кто сделает? Опять обращаемся к [2,c.60].
Нейросети в торговых системах. 2.



( Читать дальше )

Блог им. 3Qu |Моделирование Торговых Систем на Python. 2.

    • 12 мая 2020, 10:29
    • |
    • 3Qu
  • Еще

Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].

В комментариях к предыдущему топику меня критиковали за неоптимальность кода Python. Однако, текст читают люди с совершенно разной подготовкой — от почти не знающих Python или знающих другие языки программирования, до продвинутых пользователей. Последние легко могут обнаружить неоптимальность кода и заменить его своим. Тем не менее, код должен быть доступен и новичкам, возможно не обладающим знанием пакетов и продвинутых методов. Поэтому, в коде я буду, по возможности, использовать только базовые конструкции Python, не требующие глубоких знаний, и которые могут легко читаться людьми, программирующими на других языках. Вместе с тем, по мере изложения, без фанатизма, буду вводить и новые элементы Python.
Если вы хотите как-то улучшить или оптимизировать код, приводите его в комментариях — это только расширит и улучшит изложенный материал.

Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА:



( Читать дальше )

Блог им. 3Qu |Моделирование Торговых Систем на Python. 1.

    • 09 мая 2020, 19:31
    • |
    • 3Qu
  • Еще

Для моделирование ТС на Python, прежде всего нужен сам Python. Pythonы бывают очень разные.

Самый большой и длинный Python — Anaconda (https://anaconda.org/). Скачать дистрибутив Anaconda можно здесь — Индивидуальное издание -https://www.anaconda.com/products/individual.
Я работаю именно с Anaconda. Установив Anaconda мы получаем сам Python, уже установленные значительную часть нужных и ненужных пакетов с библиотеками Python, и несколько сред разработки. И все это сразу готово к работе, и нам, по большей части, уже не придется дополнительно устанавливать пакеты и среды.

Самый маленький Python последней версии 3.8.2. скачивается с сайта самого Python — https://www.python.org/. Это, практически, только сам язык, компилятор и минимальный набор пакетов. Сделать с ним практически ничего невозможно, и для работы придется постоянно устанавливать нужные пакеты. Среду разработки придется также устанавливать самостоятельно.
Этот Python больше подходит для запуска и работы с уже отлаженными законченными программами.



( Читать дальше )

Блог им. 3Qu |Как вы относитесь к перестраивающимся индикаторорам в торговых системах?

    • 11 апреля 2020, 21:32
    • |
    • 3Qu
  • Еще

Как вы относитесь к перестраивающимся индикаторорам в торговых системах?

Никак
Отрицательно
Допускаю их применение
Положительно, но не применяю
Положительно, применяю.
Всего проголосовало: 40
Дискуссии, если понадобится, потом, когда немного статистики наберется.

Блог им. 3Qu |Беспроигрышная стратегия для фьючерсов.

    • 10 января 2020, 19:43
    • |
    • 3Qu
  • Еще

Стратегия стара как мир, и называется — календарный спред. В общем, разновидность арбитража. В простейшем виде, продаем дальний фьючерс, покупаем ближний, ждем некоторое время, закрываем позицию, получаем гарантированную прибыль. Как и у каждой стратегии, есть свои нюансы, и ошибки могу привести к убыткам. Но, это не ошибки, типа, не угадали куда пойдет — вверх или вниз. Это ошибки стратегии. Здесь не надо гадать куда пойдет.

В неклассическом виде в эту стратегию можно играть хоть интрадей, и 3-4 сделки в день вам обеспечены. Играть руками не рекомендую, целый день пялиться в монитор — может крыша поехать. А вот автоматом оч неплохо, тем более, что стратегия легко алгоритмизируется. Риски? — максимум 2-3 неудачных копеечных сделок в месяц.
Ну, и прежде чем начинать, попробуйте на кошках — смоделируйте в Python, например.
Исходная идея изложена. Ну, а конкретика, это уже не для общего доступа, кому нужны конкуренты в стакане.) Здесь каждый сам за себя. Ну, а стратегий на этой идее можно построить не одну, а целое семейство. Удачи!


Блог им. 3Qu |Quik - лучший терминал для MOEX.

    • 09 января 2020, 22:36
    • |
    • 3Qu
  • Еще

К сожалению, я не шучу. Quik мне активно не нравится. О недостатках Quik — неудобный, глючный, периодически подвисающий на абсолютно пустом месте в самый неподходящий момент, и пр., и пр. Даже оставив в нем всего несколько самых необходимых окон и инструментов, избавиться от его глючности не получится. Уж, за более чем 10 лет, разработчики Quik могли бы его довести до ума, но воз и ныне там.

Видел и пользовался терминалами много лучше — с полным C-API, оч удобные и лишенные каких либо существенных недостатков — на них и работал аж до 2013 г. Это были самопальные термналы брокеров, для которых, к тому-же, было написано много вспомогательного софта. К сожалению, к 2013 г терминалы безнадежно устарели, благодаря апгрейдам становились все хуже, и, в конце концов, были сняты брокером с эксплуатации. Вся проделанная работа по написанию софта пошла прахом, и для работы предстояло выбрать другой терминал и/или брокера.
Коннекторы сразу не подошли. Остался выбор из 3-х терминалов c возможностью программирования или подключения внешнего софта — Quik, TRANSAQ, и МТ5.
TRANSAQ: есть только у одного брокера Финам. Если Финам откажется от Transag или поменяет версию терминала на несовместимую, то весь вспомогательный софт предстоит переделывать заново. Спсибо, я это уже проходил.) Кроме того, Transag есть толькоу Финам, и изменить брокера становится невозможно — опять надо будет все переделывать.
МТ5: имеется для МОЕХ у ограниченнного числа брокеров. Строго говоря, биржевым терминалом не является, и судя по форуму MQL, проблем с биржей у него выше крыши. Я так понимаю(оценочное суждение), фирма MQ попыталась вывести МТ5 на биржу, ничего с этого не получила, и завязала с этой деятельностью. Да, такой хоккей нам тоже не нужен.
Quik — старенький, плохонький, глюковатенький, но имеет всю необходимую функциональность, и все нужные возможности. Имеется практически у всех брокеров — смена или добавление брокера не вызовет проблем. В одночасье не исчезнет, что могут себе позволить терминалы оганиченного применения — Transaq, и тот же МТ5.
Отсюда следует, что Quik — лучший терминал для биржи MOEX для большинства пользователей, особенно для тех, кто пользуется каким либо вспомогательным софтом — индикаторы, торговые системы, системы анализа и пр.
Жаль, что я этого не понял раньше, не пришлось бы весь софт переписывать с нуля.

  • обсудить на форуме:
  • QUIK

Блог им. 3Qu |О вероятностях и Байесе.

    • 19 декабря 2019, 17:39
    • |
    • 3Qu
  • Еще
На днях был пост Оксана Разяпова  "Про вероятности". В нем предполагалось что рыночные ситуации разруливаются теоремой Байеса.
Был также ответ А.Г. -«Интересно, как Вы Баейса посчитаете, если не знаете точные значения вероятностей из Ваших же формул.» 
Ну, во первых, большинство ситуаций при анализе рыночных рядов Байесом никак не «разруливаются» — все вероятности на уровне 0.5.
И во вторых. Тем не менее при анализе ВР Байес неплохо работает при проверке статистических гипотез. Однако такие гипотезы должны быть изначально, и далеко не факт, что каждая из них при проверке даст что-либо отличное от 0.5. Но, если гипотеза окажется верной, то значения вероятностей 0.6-0.7 вполне достижимы, что вполне достаточно для практических целей. Если повезет с гипотезой, то на ней можно и реальную ТС построить.
Ну, а параметры есть откуда брать. Считается Байес в Python — пакет scikit-learn, например. И в этом пакете не только Байес, но и много других методов.
Как просто и быстро связаться с Python, и как проверяются стат гипотезы я вкратце писал в своих предыдущих топиках.



Блог им. 3Qu |Коммуникации Quik Lua с внешним миром.

    • 14 декабря 2019, 20:42
    • |
    • 3Qu
  • Еще

Мне нравится Lua. Lua хороший компактный язык на котором можно сделать индикаторы, различные вспомогательные программы, помогающие трейдеру и даже несложные торговые системы (ТС, роботы). Пожалуй единственная книга по Lua — Роберту Иерузалимски: Программирование на языке Lua. Ее можно найти в интернете.

Lua имеет также несложный C-API позволяющий связать программы Quik Lua с внешним миром через DLL и получить доступ практически ко всему, в том числе к любым математическим библиотекам обработки данных, что необходимо для сколь-нибудь сложным ТС. Однако, для этого уже необходимо знание не только Lua, но и Lua C-API, языка С/С++, а также умения писать DLL. При этом надо будет решить еще ряд проблем, которые возникнут по ходу пьесы в процессе этой деятельности. Далеко не каждый пользователь Quik и Lua может все это реализовать в обозримое время.
У Quik Lua (QLua) есть еще недостатки — все события терминала в Lua работают в потоке терминала, и получив из них данные надо как можно быстрей завершать функции обработки этих данных и освобождать поток терминала, иначе терминал просто повиснет. Единственная функция QLua работающая в собственном потоке — это main() и вся сколь-нибудь сложная обработка может находиться только в ней.
Кроме того, для Lua крайне мало библиотек, а существующие работают оч не быстро. В принципе, это и не нужно, если можно организовать связь с внешним миром через C-API. Но нам от этого легче не становится.) Короче, для написания хорошей сложной ТС нам надо выйти за пределы QLua и установить связь с внешним миром, и сделать это доступными средствами.
Сейчас наиболее продвинутым языком, включающим в себя массу библиотек обработки данных является Python. По применимости для обработки данных он, пожалуй, занимает первое место в мире, а по распространенности входит в первую пятерку. В числе библиотек — математические, статистические, машинного обучения и пр., и пр. Таких библиотек более тысячи только в Anaconda, большинство из которых устанавливается при ее инсталяции. Вы можете не использовать Anaconda и скачать Python с сайта



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Блог им. 3Qu |Применение Машинного Обучения в Торговых Стратегиях

    • 13 декабря 2019, 19:20
    • |
    • 3Qu
  • Еще
В прошлом посте  Мода на Машинное Обучение мы выяснили, что Машинное Обучение (МО) может решить только конкретные задачи, т.к. единственное чем занимается, так это подбором решения под заранее известные ответы, но делает это оч качественно. Посмотрим, где в ТС можно найти такие задачи.
Пусть у нас возникла идея замечательной ТС. Мы накидали на график всяческих индикаторов, ну, и прям видно — вот оно, счастье. Начали долго и муторно писать логику входов в сделку и пр. Параметры индикаторов и их сочетания неизвестны, логику еще продумывать надо, количество if зашкаливать начинает — эт только на глаз все хорошо и просто.
Подождите, так нам нужно найти всего лишь некоторый набор математических выражений для описания нашей стратегии, а это как раз задача для МО, и, по идее, МО должно с такой задачей хорошо справиться.
Итак, берем нашу стратегию, пишем несложную логику в общих чертах описывающую нашу стратегию — получаем как-бы упрощенный вариант стратегии. С помощью этой логики (упрощенной стратегии) выделяем интервалы обучения и генерируем обучающие последовательности. Подготавливаем данные — приводим все это к виду понятному МО. Обучаем на этих данных МО, проверяем на независимых данных — получаем готовую стратегию. Естественно, упрощенную логику (стратегию) оставляем как часть стратегии, ограничивающую область применения МО.
Собственно, сэкономили на написании логики стратегии.
Ну, а будет работать такая стратегия или нет — это уже зависит не от МО, а от идеи самой стратегии. Естественно, предполагаем, что как готовить данные, обучать-проверять — это мы хорошо знаем и все правильно делаем.

....все тэги
UPDONW
Новый дизайн